iT邦幫忙

2022 iThome 鐵人賽

DAY 19
0
Security

建構安全軟體開發系列 第 19

建構安全軟體開發 EP 19

  • 分享至 

  • xImage
  •  

Hello, 各位 iT 邦幫忙 的粉絲們大家好~~~

本篇是 建構安全軟體開發 系列文的 EP19。


閱讀本篇前,可以先回顧一下 EP17EP18 所提及的觀點。

本篇使用 Microsoft Threat Modeling Tool 搭配 S.T.R.I.D.E 模型進行 Thread Modeling 分析。

PS 若有需要 Microsoft Threat Modeling Tool 可透過 Click-to-Download 安裝。

開啟 Microsoft Threat Modeling Tooling 之後,在 "Template for New Models" 這個下拉選單選到 "SDL TM Knowledge Base" 的選項:
Threat Modeling Tooling

接著點選 "Create A Model":
Threat Modeling Tooling

進到 Threat Modeling 的繪製 DFD 畫面:
Threat Modeling Tooling

展示範例就先做一個很基本網路應用的 DFD 設計。

從 Generic Process 當中拉一個 Browser Client:
Threat Modeling Tooling

再從 Generic Process 當中拉一個 Web Application:
Threat Modeling Tooling

接著再到 Generic Data Flow 當中將 Browser Client 與 Web Application 用 HTTP 連線將兩邊互相串接起來:
Threat Modeling Tooling

找到 Generic Trust Line Boundary 選到 Internet Boundary,並且在 Browser Client 與 Web Application 中畫出界線:
Threat Modeling Tooling

到這邊完成一個 DFD 的展示範例最原始的基本圖型。

透過 Menu 當中的 View 選項,找到 Analysis View 後點選:
Threat Modeling Tooling

接著會針對目前的設計看到 Threat List 出現相關的 S.T.R.I.D.E 分析:
Threat Modeling Tooling

點選 Threat List 當中出現相關的 S.T.R.I.D.E 分析的任何一條 Threat,再 Threat Properties 當中會告知會面臨風險的詳細資訊:
Threat Modeling Tooling

接著在 Threat List 透過 Category 的欄位排序:
Threat Modeling Tooling

看到 ID 編號 9 與 18 這兩個屬於 S.T.R.I.D.E 模型當中的 I (Information disclosure) 的 Threat,要面對這兩個 Threat 的可能的方式是將 HTTP 改為 HTTPS 的連線模式。

可從目前繪製的 DFD 當中 HTTP 改為 HTTPS 的連線模式可做以下的操作直接轉換:

  1. 針對原本的 HTTP 連線點選右鍵選單,選到 Convert To -> Generic Data Flow。
    Threat Modeling Tooling

  2. 轉換成 Generic Data Flow。
    Threat Modeling Tooling

  3. 針對 Generic Data Flow 連線點選右鍵選單,選到 Convert To -> HTTPS。
    Threat Modeling Tooling

  4. 轉成 HTTPS 連線。
    Threat Modeling Tooling

變更 Client To Application 連線為 HTTPS 時,可以注意到 Threat List 當中 ID 編號 9 的 Threat 消失。

繼續變更 Application To Client 連線為 HTTPS,完成後可以注意到 Threat List 當中 ID 編號 18 的 Threat 消失。
Threat Modeling Tooling

PS 其實除了編號 9、18 的 Threat 消失外,還有其他的 Threat 消失,變更後的 Threat 總計為 17 個,在尚未變更為 HTTPS 連線時的 Threat 為 23 個。

如果要針對目前的 DFD 當中的 ID 編號為 1 的這個 Threat 屬於 S.T.R.I.D.E 模型當中的 T (Tampering) 的 Threat。

要面對這個 Threat 的可能的方式是將 Web Application 當中的 Input 與 Output 進行處理。

可從目前繪製的 DFD 當中 Web Application 的連線 Input 與 Output 進行改變:

  1. 針對原本的 Web Application 這個 Process 點選右鍵選單,選到 Property。
    Threat Modeling Tooling

  2. 找到 Sanitizes Input。
    Threat Modeling Tooling

  3. 透過下拉選單調整為 Yes。
    Threat Modeling Tooling

  4. 找到 Sanitizes Output。
    Threat Modeling Tooling

  5. 透過下拉選單調整為 Yes。
    Threat Modeling Tooling

變更 Web Application 當中的 Input 與 Output 進行處理,可以注意到 Threat List 當中 ID 編號 01 的 Threat 消失。
Threat Modeling Tooling

注意要對應實際開發的系統去繪製 DFD 去取得對應的 Threat 報告,所以如果未能做到這些改變,則不該進行上述兩點的 DFD 設計。

最後,可以透過 Microsoft Threat Modeling Tool 進行 Threat 報告。

在 Menu 選單找到 "Reports" 再選到 "Create Full Report...":
Threat Modeling Tooling

在出現的對話視窗當中點選 "Generate Report":
Threat Modeling Tooling

會產生一個 HTML 檔案,在這個 HTML 檔案除了會有綜合整理的 Summary 之外,還會針對 DFD 當中每個 Data Flow 去進行 Threat 分析。

從 Browser Client 到 Web Application:
Threat Modeling Tooling

從 Web Application 到 Browser Client:
Threat Modeling Tooling

最後再透過此 Report 進行 S.T.R.I.D.E 檢視:
Threat Modeling Tooling

如果其項目存在則必須描述其理由,並解釋該風險如何使其成為 剩餘風險 EP13

另外,DFD 的圖例可參考下圖解釋:
Threat Modeling Tooling DFD Symbols
上圖取自 Threat Modeling Process 的 Symbols 描述圖。



上一篇
建構安全軟體開發 EP 18
下一篇
建構安全軟體開發 EP 20
系列文
建構安全軟體開發30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言